package com.xxl.job.executor.model;

import java.util.Arrays;
import java.util.List;

/**
 * 常量
 */
public class Constants {

    /**
     * 文件比较模式
     */
    public static class CompareMode {
        public static final String SIZE_TIME = "sizeAndTime";
        public static final String MD5 = "md5";
    }

    /**
     * 时间时区
     */
    public static class Timezone {
        public static final String UTC = "UTC";
        public static final String UTC_8 = "UTC+8";
    }

    /**
     * 文件传输模式
     */
    public static class TransferMode {
        public static final String DELETE_RECREATE = "deleteAndRecreate";
        public static final String RESUME = "resume";
    }

    public static class FtpOperation {
        public static final String UPLOAD = "upload";
        public static final String DOWNLOAD = "download";
    }

    public static class DangerousCommands {
        public static final List<String> linux = Arrays.asList(
                // 文件删除与销毁命令
                "rm", "rmdir", "shred", "wipe", "srm", "rm -rf", "rm -f", "rm -r",
                "rm *", "rm .*", "rm -rf /", "rm -rf /*", "rm -rf ~/*",

                // 文件系统操作
                "mkfs", "mkfs.ext2", "mkfs.ext3", "mkfs.ext4", "mkfs.xfs", "mkfs.btrfs",
                "mkfs.vfat", "mke2fs", "fdisk", "parted", "gdisk", "sgdisk", "cfdisk",
                "partprobe", "resize2fs", "xfs_growfs", "mkdosfs",

                // 危险写入操作
                "dd", "dd if=", "dd of=", "cat >", "echo >", "printf >", "tee >",
                "mv", "cp -f", "cp --force", "mv -f", "mv --force",

                // 权限与所有权修改
                "chmod", "chown", "chgrp", "setfacl", "getfacl", "chmod 777",
                "chmod 666", "chown root:", "chown :root",

                // 系统关机与重启
                "shutdown", "reboot", "poweroff", "halt", "init 0", "init 6", "systemctl poweroff",
                "systemctl reboot", "systemctl halt",

                // 特权提升
                "sudo", "su", "su -", "sudo su", "sudo -i", "pkexec", "doas", "runuser",

                // 进程操作
                "kill", "killall", "pkill", "kill -9", "killall -9", "pkill -9",
                "systemctl stop", "systemctl kill", "service stop",

                // 网络危险操作
                "iptables", "ip6tables", "nft", "ufw", "firewalld", "netfilter",
                "ifconfig down", "ip link set down", "route del", "ip route del",

                // 设备操作
                "mount", "umount", "losetup", "mdadm", "lvm", "pvcreate", "vgcreate",
                "lvcreate", "pvremove", "vgremove", "lvremove",

                // 环境变量与配置修改
                "export PATH=", "export LD_LIBRARY_PATH=", "env -i", "unset PATH",

                // 脚本与执行文件生成
                "bash -c", "sh -c", "zsh -c", "chmod +x", "ln -s", "ln -f",

                // 敏感目录操作
                "/dev/", "/proc/", "/sys/", "/etc/", "/bin/", "/sbin/", "/usr/bin/",
                "/usr/sbin/", "/boot/", "/root/", "/home/",

                // 其他危险操作
                "ddrescue", "dd_rescue", "clonezilla", "partclone", "rsync --delete",
                "find . -delete", "find / -delete", "rm -rf .[!.]*", "rm -rf ..?*"
        );

        // Windows系统危险命令列表
        public static final List<String> windows = Arrays.asList(
                // 文件删除命令
                "del", "erase", "rmdir", "rd", "del /f", "del /s", "del /q",
                "del *", "erase *", "rmdir /s", "rmdir /q", "rd /s", "rd /q",

                // 格式化命令
                "format", "format /q", "format /y", "diskpart", "fdisk",

                // 系统操作命令
                "shutdown", "shutdown /s", "shutdown /r", "shutdown /p",
                "shutdown /h", "taskkill", "taskkill /f", "taskkill /im",

                // 注册表操作
                "reg add", "reg delete", "reg import", "reg export", "reg load",
                "reg unload", "reg query", "reg copy", "reg restore",

                // 权限修改
                "cacls", "icacls", "takeown", "attrib +s", "attrib +h",

                // 危险工具
                "mshta", "wscript", "cscript", "powershell", "pwsh",
                "bash", "curl", "wget", "certutil", "bitsadmin",

                // 敏感目录操作
                "c:\\windows\\", "c:\\system32\\", "c:\\syswow64\\",
                "c:\\program files\\", "c:\\users\\", "c:\\boot\\", "C:\\var\\ftp\\2\\3\\4\\5",

                // 其他危险操作
                "move", "ren", "rename", "copy /y", "xcopy /e", "xcopy /h",
                "echo >", "type >", "more >", "fsutil", "diskperf", "bcdedit"
        );
    }

}
